﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Senac.Escola.Projeto.Models;
using Senac.Escola.Projeto.Models.Context;

namespace Senac.ProjetoIntegrador.EducacaoWeb.Controllers
{
    public class PerguntaController : Controller
    {
        private Context db = new Context();


        public ViewResult Index()
        {
            return View(db.Pergunta.Include(p => p.Atividade).ToList());
        }

        public ViewResult EditPergunta(int id)
        {
            return View(db.Atividade.Find(id).Pergunta.ToList().Where(x => x.Ativo));
        }


        public ViewResult Details(int id)
        {
            Pergunta pergunta = db.Pergunta.Find(id);
            return View(pergunta);
        }

        public ActionResult Create()
        {
            ViewBag.AtividadeID = new SelectList(db.Atividade, "ID", "Nome", "1");

            return View();
        }


        [HttpPost]
        public ActionResult Create(Pergunta pergunta)
        {
            if (ModelState.IsValid)
            {
                db.Pergunta.Add(pergunta);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            ViewBag.AtividadeID = new SelectList(db.Atividade, "ID", "Nome", pergunta.AtividadeID);
            return View(pergunta);
        }


        public ActionResult Edit(int id)
        {
            Pergunta pergunta = db.Pergunta.Find(id);
            ViewBag.AtividadeID = new SelectList(db.Atividade, "ID", "Nome", pergunta.AtividadeID);
            return View(pergunta);
        }

        [HttpPost]
        public ActionResult Edit(Pergunta pergunta)
        {
            if (ModelState.IsValid)
            {
                db.Entry(pergunta).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.AtividadeID = new SelectList(db.Atividade, "ID", "Nome", pergunta.AtividadeID);
            return View(pergunta);
        }


        public ActionResult Delete(int id)
        {
            Pergunta pergunta = db.Pergunta.Find(id);
            return View(pergunta);
        }

        [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            Pergunta PerguntaModel = db.Pergunta.Find(id);

            if (PerguntaModel != null)
            {
                PerguntaModel.Ativo = false;
                PerguntaModel.Atividade.QuantidadePerguntas--;
            }

            db.Pergunta.Add(PerguntaModel);
            db.SaveChanges();

            return RedirectToAction("Index","Atividade");

        }

        protected override void Dispose(bool disposing)
        {
            db.Dispose();
            base.Dispose(disposing);
        }

        [HttpGet]
        public ActionResult CreatePergunta(int id)
        {
            Pergunta pergunta = new Pergunta();
            pergunta.Atividade = db.Atividade.Find(id);

            ViewBag.AtividadeNome = pergunta.Atividade.Nome;
            ViewBag.AtividadeID = new SelectList(db.Atividade.Where(x => x.ID == id), "ID", "Nome", pergunta.AtividadeID);
     
            return View("CreatePergunta");
        }

        [HttpPost]
        public ActionResult CreatePergunta(Pergunta pergunta)
        {
            pergunta.Atividade = db.Atividade.Find(pergunta.AtividadeID); 
            pergunta.Atividade.QuantidadePerguntas += 1;

            if (pergunta.Atividade.Pergunta.Count == 0)
                pergunta.NumeroPergunta = 1;
            else
                pergunta.NumeroPergunta = pergunta.Atividade.Pergunta.Count + 1;

            db.Pergunta.Add(pergunta);
            db.SaveChanges();


            ViewBag.AtividadeID = new SelectList(db.Atividade.Where(x => x.ID == pergunta.AtividadeID), "ID", "Nome", pergunta.AtividadeID);

            return RedirectToAction("CreatePergunta");
        }
    }
}